home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
netz
/
mailfilter
/
arexx
/
add_pgp-header.mailfilter
next >
Wrap
Text File
|
1995-07-09
|
3KB
|
166 lines
/* Add_PGP-Header.mailfilter */
/*
** $VER: Add_PGP-Header.mailfilter 1.1 (9.7.95)
**
** Dieses Script ist dazu gedacht, bei PGP verschlüsslten Nachrichten
** wieder einen 'CRYPT:'-Header einzutragen, wenn dieser z.B. durch die
** Konvertierung von/nach RFC-Format verlorengegangen ist.
**
** Das Script überprüft ob ein 'CRYPT:'-Header vorhanden ist, wenn ja
** wird die Originalnachricht unverändert übernommen. Sonst wird geprüft
** ob die erste Zeile des Inhalts '-----BEGIN PGP MESSAGE-----' ist,
** wenn dies zutrifft wird die Zeile 'CRYPT: PGP' zum Header hinzugefügt.
** Das Pointprogramm kann anschließend die Nachricht als PGP erkennen
** und automatisch entschlüsseln.
*/
/*
** Ergebnisse anfordern
*/
OPTIONS RESULTS
/*
** Headerdatei komplett einlesen und auf 'CRYPT:'-Header prüfen
*/
anzahl = 0
IF OPEN('header','T:MailFilter_Header.mftemp','READ') THEN DO
DO WHILE ~EOF('header')
/*
** Eine Zeile einlesen, aber ACHTUNG! Die ARexx-Funktion 'READLN()'
** enthält einen Bug und kann deshalb nur Zeilen mit höchstens 1000
** Zeichen einlesen, zum Einlesen von Headerzeilen deshalb immer die
** Funktion 'ReadZeile()' benutzen!
*/
zeile.anzahl = ReadZeile('header')
/*
** Abbrechen, wenn der Header zu Ende ist
*/
IF zeile.anzahl = '' THEN
BREAK
/*
** Wenn die Nachricht einen 'CRYPT:'-Header enthält wird das
** Script mit EXIT(10) beendet, damit wird die Originalnachricht
** unverändert in den Zielpuffer übernommen.
*/
IF UPPER(LEFT(zeile.anzahl,6)) = 'CRYPT:' THEN
EXIT(10)
/*
** Zähler erhöhen, die abschließende Leerzeile wird nicht mitgezählt
*/
anzahl = anzahl+1
END
END
/*
** Headerdatei schließen
*/
CALL CLOSE('header')
/*
** Erste Zeile der Inhaltdatei einlesen, und
** auf '-----BEGIN PGP MESSAGE-----' prüfen
*/
IF OPEN('inhalt','T:MailFilter_Inhalt.mftemp','READ') THEN DO
/*
** Erste Zeile des Inhalts einlesen
*/
pgpzeile = READLN('inhalt')
/*
** Wenn die erste Zeile auf den Anfang einer PGP-verschlüsselten
** Nachricht hinweist, dann einen 'CRYPT:'-Header ergänzen
*/
IF pgpzeile = '-----BEGIN PGP MESSAGE-----' THEN DO
zeile.anzahl = 'CRYPT: PGP'
anzahl = anzahl+1
zeile.anzahl = ''
END
END
/*
** Headerdatei neu schreiben
*/
IF OPEN('header','T:MailFilter_Header.mftemp','WRITE') THEN DO
/*
** Alle Zeilen (einschließlich der abschließenden Leerzeile !!!)
** neu in die Headerdatei schreiben
*/
DO i = 0 TO anzahl
CALL WRITELN('header',zeile.i)
END
END
/*
** Script beenden
*/
EXIT(0)
/*
** Diese Funktion liest eine beliebig lange Zeile aus einer Datei
** und umgeht damit den Bug in der ARexx-Funktion 'READFILE()'!
**
** Als Argument muß der logische Name der Datei übergeben werden.
** Die Funktion liefert als Ergebnis die eingelesene Zeile.
*/
ReadZeile:
PROCEDURE
PARSE ARG datei
/*
** Eine Zeile einlesen
*/
zeile = READLN(datei)
/*
** Prüfen ob das letzte gelesene Zeichen ein LF war, wenn nicht
** weiterlesen bis ein LF gefunden wird.
*/
DO FOREVER
CALL SEEK(datei,-1,'CURRENT')
zeichen = READCH(datei)
IF zeichen = '0A'x THEN
BREAK
ELSE
zeile = zeile||READLN(datei)
END
RETURN(zeile)